/**
 * @author ChaP
 * @date 2019/05/28
 * @describe:
 */
package CodingTest.AC20190528;

/**leetcode - 463
 * 给定一个包含 0 和 1 的二维网格地图，其中 1 表示陆地 0 表示水域。

 网格中的格子水平和垂直方向相连（对角线方向不相连）。整个网格被水完全包围，但其中恰好有一个岛屿（或者说，一个或多个表示陆地的格子相连组成的岛屿）。

 岛屿中没有“湖”（“湖” 指水域在岛屿内部且不和岛屿周围的水相连）。格子是边长为 1 的正方形。网格为长方形，且宽度和高度均不超过 100 。计算这个岛屿的周长。



 示例 :

 输入:
 [[0,1,0,0],
 [1,1,1,0],
 [0,1,0,0],
 [1,1,0,0]]

 输出: 16
 */
public class islandPerimeter {
    public int islandPerimeter(int[][] grid){
        int rows = grid.length;
        int cols = grid[0].length;
        int sum = 0;
        for(int i =0;i<rows;i++){
            for(int j = 0;j<cols;j++){
                if(grid[i][j] == 1){
                //左边
                if(j == 0 || grid[i][j-1] == 0 )
                    sum++;
                //右边
                if(j == cols-1 || grid[i][j+1] == 0)
                    sum++;
                //上边
                if(i == 0 || grid[i-1][j] == 0)
                    sum++;
                //下边
                if(i == rows-1 || grid[i+1][j] ==0)
                    sum++;
            }}
        }
        return sum;
    }

    public static void main(String[] args) {
        islandPerimeter il = new islandPerimeter();
//        int[][] gr = {{0,1,0,0},{1,1,1,0},{0,1,0,0},{1,1,0,0}};
        int [][] gr = {{1},{0}};
        System.out.println(il.islandPerimeter(gr));
    }
}
